Since its inception in 1995 (see Telatar [1]) Multi-Input-Multi-Output (MIMO) technology has become a keystone of wireless standards. Based upon simultaneous transmission and reception through multiple antennas, it enables information capacity increase, proportionate to the number of either transmitting or receiving antennas (specifically, to the smallest of these two). This increase, relative to transmission and reception through a single antenna at each side, is achieved with neither power nor spectrum penalty. The only cost then is merely the cost of the extra implementation hardware. MIMO has been adopted by both Wireless LAN and Cellular standards, with MIMO dimension increasing and antenna arrays as big as 8×8 being defined in next generation standards.
Error Correction Coding (ECC) methods by which the distance (as defined in some suitable abstract space) between transmitted information messages is increased, relative to the distance between uncoded messages, so that their resilience to transmission channel distortion and noise is enhanced have been known and widely utilized for more than 60 years. These codes have been traditionally designed over binary spaces. The metric defined in these spaces is usually the so called Hamming distance.
Binary ECC is implemented by mapping an information binary vector into a longer binary vector. Better error performance (i.e. lower Bit Error Rate (BER) or, equivalently, coding gain) is achieved then at the expense of extra bits. When the transmission channel is limited to a maximal signaling rate (channel uses per unit of time) longer transmission vectors are equivalent to lower information rate; so binary ECC achieves better BER than uncoded information bits at the usual penalty of lower information rate.
ECC may be also implemented in other spaces. In particular coded modulation schemes in which distinct messages are mapped in the modulated signal space, so that their Euclidean distances from each other (or other related metrics) are optimized in some way have been known for a long time (see e.g. Forney [13]). Said schemes are also known as signal coding, or signal space coding methods. An important example of this class of methods (but certainly not exclusive) is Lattice Coding (see Conway and Sloane [2]). In Lattice Coding, messages represented by, say, binary vectors are efficiently mapped into signal space, resembling efficiently packed solid spheres in a given volume; Lattice Coding falls then under the theory of Sphere Packing.
It should be noted that while we use the term Lattice Code in the sequel, the proposed invention is equally applicable to other signal space coding schemes, and adaptations of the present invention to fit such schemes should be easily made by those skilled in the art.
Since the transmitted coded message is transmitted at the same channel signaling rate as an uncoded message, then no information rate penalty is incurred in their use, and their BER coding gain comes practically for free (except of course for the cost of the implementation machinery).
As mentioned above, Lattice Codes are usually generated by mapping a (usually) binary information vector message into a suitable integer vector (i.e. a vector in which its elements are integer numbers) such that the eventually resulting lattice point is confined to a specified transmission efficient closed region of space, typically a hyper-cube or hyper-sphere; this process may be called the Lattice Encoding process (see Nissani [3], [4], [5] and Conway and Sloane [14]) or the ‘shaping’ process (see Sommer et al [6]); this process includes linearly acting upon this said integer vector by means of a Lattice Generator matrix, resulting in a real vector (i.e. lattice point) positioned inside said specified closed space region.
The Lattice Generator matrix columns (or in some notations, its rows) comprise in fact a basis vectors set of the Lattice Code. At the receive side, due to transmission channel and receiver effects, a noisy version of the transmitted lattice point is received. This vector is usually processed by a so called Lattice Detection method, associated with the selected Lattice Code and a lattice point, hopefully the originally transmitted, is recovered. This is then decoded by a Lattice Decoding process, the counterpart of the fore mentioned Lattice Encoding process (Nissani [3], [4], [5]) and the received information bits are then delivered to the user.
Use of Lattice Coding in communication applications has been limited so far (see Lang and Longstaff [7]). This is probably due to several factors: a. relatively few Lattice Codes were available with known and feasible Lattice Detection methods, which resulted in little flexibility to system designers, b. no general method was known for the above mentioned Lattice Encoding process (see Forney et al. [8] and, again, Sommer et al [6]); c. only moderate coding gain was achieved by those few Lattice Codes (such as the Leech lattice, denoted L24) with feasible detection methods.
Most recently, Lattice Codes were discovered for which BER performance approximates the Shannon Capacity bounds. These Lattice Codes, called Low Density Lattice Codes (LDLC, see Sommer et al [6]) closely resemble (and were actually inspired by) the so called Low Density Parity Check (LDPC) binary codes (see Gallager [9]), which have gained wide acceptance in recent years. Like LDPC, LDLC are characterized by a sparse Lattice Generator matrix inverse (or sometimes, sparse Lattice Generator matrix itself); and the Lattice Detection process (i.e. the said process of association of the noisy received vector to a near, hopefully the nearest, lattice point) is done by probabilistic methods (e.g. message passing or belief propagation), closely resembling those of LDPC.
Concurrently, the long time said open Lattice Encoding and Decoding problem was solved in recent years by a computationally efficient, universal (i.e. suitable to any lattice) method (see Nissani [3], [4] and [5]).
The fore mentioned obstacles preventing Lattice Code acceptance seem to have now been solved: a. an arbitrary variety of Lattice Codes of different dimensions with efficient Lattice Detection methods are now developed (Yona and Feder [10]), which trade off coding gain for latency and complexity, b. a universal and computationally efficient Lattice Encoding and Decoding method was devised (Nissani [3], [4] and [5]), and c. Lattice Codes with high coding gain (close to Shannon Capacity) are contained in this family.
Outstandingly, these codes get close to Shannon Capacity bounds at no information rate penalty at all, so they may be naturally considered as a coding method of choice as bandwidth and spectrum are generally a scarce resource.
Since MIMO is a well based keystone of wireless, for Lattice Coding (and other signal space coding methods) to be adopted, it should be able to be seamlessly integrated with MIMO transmission systems, without incurring any BER performance degradation. As was already pointed out (see Sommer et al [6]) and as will be described in the sequel, direct (‘natural’ or ‘nave’) integration between MIMO and Lattice Coding will in general cause severe link (BER) performance problems.
The proposed invention presents a simple and feasible solution to these problems which enables Lattice Coded information to be transmitted through MIMO channels with no link performance penalty, i.e. practically achieving the designed coding gain.
It should be noted again that while the term Lattice Coding is used along this proposed invention, the method proposed herein is equally applicable to any other signal space coding scheme characterized by Euclidean or related metrics as the distance measure between different transmission messages.